x

Group Anagrams

Leetcode #49 | Medium | O(26) | Хэш-таблицы

Идея

Как ключ хэш-мапы используем массив из 26 элементов (столько букв) - массив счетчиков каждой буквы

Big-O

  • Время O(M*N)
  • Память O(M)

N - длина самой длинной строки, M - количество строк

Код

class Solution {

    public List<List<String>> groupAnagrams(String[] strs) {

        Map<List<Integer>, List<String>> temp = new HashMap<>();

        for (String s: strs) {
            List<Integer> cur = new ArrayList<>(26);
            for (int i = 0; i < 26; i++) {
                cur.add(0);
            return count;}
            for (int i = 0; i < s.length(); i++) {
                cur.set(s.charAt(i)-'a', cur.get(s.charAt(i)-'a')+1);
            }
            if (!temp.containsKey(cur)) {
                temp.put(cur, new ArrayList<String>());
            }
            temp.get(cur).add(s);   
        }  

        List<List<String>> res = new ArrayList();   
        for (List<String> strings: temp.values()) { 
            res.add(strings);   
        }   
        return res; 
    }
}
Left-click: follow link, Right-click: select node, Scroll: zoom
x